/**
 * this class will implement the order of our system.
 * 
 * @author Gil Levinson
 * @author Boris Fradlis
 * @author Yogev Levi
 * @author Hila Porat
 */

package vcpClasses;

import java.io.Serializable;

// Start of Order ************************************************************************

public class Order implements Serializable
{
	// class variables *******************************************************************
	
	private int orderNumber;
	private String orderDate; 
	private String orderTime;
	private String arrivalTime;
	private String orderType;
	private Float expectedCost;
	private Float actualCost;
	private String expectedLeaveTime;
	private String leaveDate;
	private String orderStatus;
	private int clientNumber;
	private int vehicleNumber;
	private int sidParkingLocation;
	private String eMail;
		
	
	// Constructors *********************************************************************** 

	/**
	 * no implementation constructor
	 */
	public Order() {}
	

	/**
	 * constructor used given following fields:
	 * @param orderNumber - the number of order
	 * @param orderDate - the date of creation
	 * @param orderTime - the time of creation
	 * @param arrivalTime - the time of arrival
	 * @param orderType - the type of order
	 * @param expectedCost - the expected cost
	 * @param actualCost - the actual cost
	 * @param expectedLeaveTime - the expected leave time
	 * @param leaveDate - the actual leave date
	 * @param orderStatus - the status of the order
	 * @param clientNumber - the client id number
	 * @param vehicleNumber - the client's vehicle number 
	 * @param sidParkingLocation - the serial number of the location
	 * @param eMail - the email for the order
	 */
	
	public Order(int orderNumber, String orderDate, String orderTime,
			String arrivalTime, String orderType, Float expectedCost,
			Float actualCost, String expectedLeaveTime, String leaveDate,
			String orderStatus, int clientNumber, int vehicleNumber,
			int sidParkingLocation, String eMail) {
		this.orderNumber = orderNumber;
		this.orderDate = orderDate;
		this.orderTime = orderTime;
		this.arrivalTime = arrivalTime;
		this.orderType = orderType;
		this.expectedCost = expectedCost;
		this.actualCost = actualCost;
		this.expectedLeaveTime = expectedLeaveTime;
		this.leaveDate = leaveDate;
		this.orderStatus = orderStatus;
		this.clientNumber = clientNumber;
		this.vehicleNumber = vehicleNumber;
		this.sidParkingLocation = sidParkingLocation;
		this.eMail = eMail;
	}

	/**
	 * constructor used given following fields:
	 * @param clientNumber number of the client
	 * @param vehicleNumber - number of the vehicle
	 * @param expectedLeaveTime - the time expected to leave the lot
	 * @param eMail - email for the order
	 * @param sidParkingLocation - the serial number of the parking space 
	 * @param orderDate - date of the order
	 * @param orderTime - time of the order
	 * @param orderStatus - status of the order
	 * @param orderType  - type of order
	 */
	
	public Order(int clientNumber, int vehicleNumber, String expectedLeaveTime, String eMail,
			int sidParkingLocation, String orderDate, String orderTime, String orderStatus, String orderType){
		this.setClientNumber(clientNumber);
		this.setVehicleNumber(vehicleNumber);
		this.setExpectedLeaveTime(expectedLeaveTime);
		this.seteMail(eMail);
		this.setSidParkingLocation(sidParkingLocation);
		this.setOrderDate(orderDate);
		this.setOrderTime(orderTime);
		this.setOrderStatus(orderStatus);
		this.setOrderType(orderType);
		this.setArrivalTime(this.orderTime);
	}
	
	/**
	 * constructor used given following fields:
	 * @param clientNumber number of the client
	 * @param vehicleNumber number of the vehicle
	 * @param sidParkingLocation the serial number of the parking space 
	 * @param orderTime time of the order
	 * @param expectedLeaveTime the time expected to leave the lot
	 * @param orderDate date of the order
	 * @param leaveDate the actual leaving time 
	 * @param eMail email for the order
	 * @param expectedCost expected cost for the order
	 * @param orderStatus status of the order
	 * @param orderType type of order
	 */
	
	public Order(int clientNumber, int vehicleNumber, int sidParkingLocation, String orderTime,
			String expectedLeaveTime, String orderDate, String leaveDate, String eMail, float expectedCost,
			String orderStatus, String orderType){
		this.setClientNumber(clientNumber);
		this.setVehicleNumber(vehicleNumber);
		this.setSidParkingLocation(sidParkingLocation);
		this.setOrderTime(orderTime);
		this.setExpectedLeaveTime(expectedLeaveTime);
		this.setOrderDate(orderDate);
		this.setLeaveDate(leaveDate);
		this.seteMail(eMail);
		this.setExpectedCost(expectedCost);
		this.setOrderStatus(orderStatus);
		this.setOrderType(orderType);
	}
	
	/**
	 * constructor used given following fields:
	 * @param vehicle the number of the vehicle
	 */
	
	public Order(int vehicle)
	{
		this.setVehicleNumber(vehicle);
	}

	// Setters and getters *****************************************************************
	
	/**
	 * @return the orderNumber
	 */
	
	public int getOrderNumber() {
		return orderNumber;
	}

	/**
	 * @param orderNumber the orderNumber to set
	 */
	
	public void setOrderNumber(int orderNumber) {
		this.orderNumber = orderNumber;
	}

	/**
	 * @return the orderDate
	 */
	
	public String getOrderDate() {
		return orderDate;
	}

	/**
	 * @param orderDate the orderDate to set
	 */
	
	public void setOrderDate(String orderDate) {
		this.orderDate = orderDate;
	}

	/**
	 * @return the orderTime
	 */
	
	public String getOrderTime() {
		return orderTime;
	}

	/**
	 * @param orderTime the orderTime to set
	 */
	
	public void setOrderTime(String orderTime) {
		this.orderTime = orderTime;
	}

	/**
	 * @return the arrivalTime
	 */
	
	public String getArrivalTime() {
		return arrivalTime;
	}

	/**
	 * @param arrivalTime the arrivalTime to set
	 */
	
	public void setArrivalTime(String arrivalTime) {
		this.arrivalTime = arrivalTime;
	}

	/**
	 * @return the orderType
	 */
	
	public String getOrderType() {
		return orderType;
	}

	/**
	 * @param orderType the orderType to set
	 */
	
	public void setOrderType(String orderType) {
		this.orderType = orderType;
	}

	/**
	 * @return the expectedCost
	 */
	
	public Float getExpectedCost() {
		return expectedCost;
	}

	/**
	 * @param expectedCost the expectedCost to set
	 */
	
	public void setExpectedCost(Float expectedCost) {
		this.expectedCost = expectedCost;
	}

	/**
	 * @return the actualCost
	 */
	
	public Float getActualCost() {
		return actualCost;
	}

	/**
	 * @param actualCost the actualCost to set
	 */
	
	public void setActualCost(Float actualCost) {
		this.actualCost = actualCost;
	}

	/**
	 * @return the expectedLeaveTime
	 */
	
	public String getExpectedLeaveTime() {
		return expectedLeaveTime;
	}

	/**
	 * @param expectedLeaveTime the expectedLeaveTime to set
	 */
	
	public void setExpectedLeaveTime(String expectedLeaveTime) {
		this.expectedLeaveTime = expectedLeaveTime;
	}

	/**
	 * @return the orderStatus
	 */
	
	public String getOrderStatus() {
		return orderStatus;
	}

	/**
	 * @param orderStatus the orderStatus to set
	 */
	
	public void setOrderStatus(String orderStatus) {
		this.orderStatus = orderStatus;
	}

	/**
	 * @return the clientNumber
	 */
	
	public int getClientNumber() {
		return clientNumber;
	}

	/**
	 * @param clientNumber the clientNumber to set
	 */
	
	public void setClientNumber(int clientNumber) {
		this.clientNumber = clientNumber;
	}

	/**
	 * @return the vehicleNumber
	 */
	
	public int getVehicleNumber() {
		return vehicleNumber;
	}

	/**
	 * @param vehicleNumber the vehicleNumber to set
	 */
	
	public void setVehicleNumber(int vehicleNumber) {
		this.vehicleNumber = vehicleNumber;
	}

	/**
	 * @return the sidParkingLocation
	 */
	
	public int getSidParkingLocation() {
		return sidParkingLocation;
	}

	/**
	 * @param sidParkingLocation the sidParkingLocation to set
	 */
	
	public void setSidParkingLocation(int sidParkingLocation) {
		this.sidParkingLocation = sidParkingLocation;
	}


	
	/**
	 * @return the leaveDate
	 */
	
	public String getLeaveDate() {
		return leaveDate;
	}



	/**
	 * @param leaveDate the leaveDate to set
	 */
	
	public void setLeaveDate(String leaveDate) {
		this.leaveDate = leaveDate;
	}


	
	/**
	 * @return the eMail
	 */
	
	public String geteMail() {
		return eMail;
	}


	
	/**
	 * @param eMail the eMail to set
	 */
	
public void seteMail(String eMail) {
		this.eMail = eMail;
	}

	

}
